package com.example.staticinnerclass;

//结论：
// 1.静态内部类可以访问外部类的静态成员，包括private访问权限的成员也可以访问
// 2.外部类也可以访问静态内部类的静态成员，包括私有访问权限的成员
public class OuterClass {

    private static String message = "资本主义社会该死！";

    private static void whoAmI(){
        System.out.println("I am OuterClass");
    }

    // 结论：外部类也可以访问静态内部类的静态成员，包括私有访问权限的成员
    private static void privateStaticMethodOfOuterClass(){
        StaticInnerClass.staticMethod();
    }

    static class StaticInnerClass{
        private int a;
        private static String b;

        public void instanceMethod(){

        }

        // 结论：静态内部类可以访问外部类的静态成员，包括private访问权限的成员也可以访问
        private static void staticMethod(){
            OuterClass.whoAmI();
            System.out.println(OuterClass.message);
        }

    }// end of StaticInnerClass

    public static void main(String[] args) {
        StaticInnerClass staticInnerClass = new StaticInnerClass();
        StaticInnerClass.staticMethod();
        OuterClass.privateStaticMethodOfOuterClass();
    }
}
